package com.hlf.modules.api.service;

import com.hlf.common.page.Page;
import com.hlf.common.page.PageReturn;
import com.hlf.modules.api.entity.Checkcode;

import java.util.List;


/**
 * 验证码服务层接口
 *
 */
public interface CheckcodeService {

    /**
     * 根据id删除
     *
     * @param id
     * @return
     */
    String deleteById(Integer id);

    /**
     * 新增
     *
     * @param record
     * @return
     */
    String insert(Checkcode record);

    /**
     * 新增,记录日志
     *
     * @param record
     * @return
     */
    String insertInLog(Checkcode record);

    /**
     * 非空字段新增
     *
     * @param record
     * @return
     */
    String insertSelective(Checkcode record);

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    Checkcode selectById(Integer id);

    /**
     * 非空字段更新
     *
     * @param record
     * @return
     */
    String updateByIdSelective(Checkcode record);

    /**
     * 更新
     *
     * @param record
     * @return
     */
    String updateById(Checkcode record);

    // 分割线

    /**
     * 查询所有
     *
     * @return
     */
    List<Checkcode> selectAll();

    /**
     * 分页查询
     *
     * @param entity
     * @param page
     * @return
     */
    PageReturn<Checkcode> selectForPage(Checkcode entity, Page page);

    /**
     * 查询最新的验证码
     *
     * @param mobile
     *            手机号码
     * @param type
     *            验证码
     * @param type
     *            类型，0=注册，1=密码找回
     * @return
     */
    Checkcode findNearestCode(String mobile, String code, int type);

    /**
     * 改变验证码状态为已使用
     *
     * @param id
     */
    void changeCodeUsed(Long id);

    /**
     * 当前操作获取验证码时，查询当前时间与上一次请求的验证码时间差
     * @param mobile
     * @return 时间差，单位：秒
     */
    int getDifftimeByNow(String mobile);

    /**
     * 当前操作获取验证码时，查询当前时间到前hoursNum小时是否有超过短信平台限制的条数
     * @param mobile
     * @param limitCount 如果限制5条，则limitCount传入4
     * @param hoursNum   如果查询一小时，则hoursNum 传入1
     */
    boolean getCodIdByNowAndLimitCount(String mobile, Integer limitCount, Integer hoursNum);
}
